Skip to main content

PostgreSQL 學習筆記

建立資料表

使用 CREATE TABLE 建立資料表:

CREATE TABLE USER (
id SERIAL PRIMARY KEY, -- 主鍵
username VARCHAR(50) NOT NULL, -- 使用者名稱
email VARCHAR(100) UNIQUE NOT NULL -- 電子郵件
);

注意事項

  • 命名規則:表格名稱與欄位名稱建議使用小寫加底線命名。
  • Primary Key:主鍵確保資料唯一性。
  • 約束條件:像 NOT NULLUNIQUE 可以強化資料的完整性。

新增資料

使用 INSERT INTO 新增資料:

INSERT INTO USER (username, email)
VALUES ('JohnDoe', 'john.doe@example.com');

提示

  • 確保提供的值與欄位定義一致。
  • 避免手動指定主鍵,讓資料庫自動生成(如 SERIALUUID)。

外來鍵 (Foreign Key)

定義與使用

外來鍵用於建立資料表之間的關聯性:

CREATE TABLE Orders (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES USER(id), -- 外來鍵
order_date TIMESTAMP NOT NULL
);

注意事項

  • 資料完整性:使用 REFERENCES 定義外來鍵,避免孤立資料。
  • 刪除行為:可選擇 ON DELETE CASCADEON DELETE SET NULL

Primary Key 與 Table 拆分 Tips

拆分表格的原則

  • 把經常變動或冗長的資料抽出來,建立單獨的表格。
  • 使用主表的 Primary Key 作為新表的 Foreign Key。

範例

主表 USER

CREATE TABLE USER (
id SERIAL PRIMARY KEY,
username VARCHAR(50) NOT NULL
);

副表 UserProfiles

CREATE TABLE UserProfiles (
id SERIAL PRIMARY KEY,
user_id INT REFERENCES USER(id), -- 外來鍵
bio TEXT,
profile_pic_url TEXT
);

刪除操作的風險提示

刪除資料時,務必加上 WHERE 條件,避免刪除所有資料。

DELETE FROM USER
WHERE id = 1;
danger

切記:未加 WHERE 條件的 DELETEUPDATE 可能導致資料遺失。